中易网

如何在c++中循环读取多个文件(连着的数字文件名)

答案:5  悬赏:0  
解决时间 2021-01-18 17:50
  • 提问者网友:蓝莓格格巫
  • 2021-01-17 17:49
如何在c++中循环读取多个文件(连着的数字文件名)
最佳答案
  • 二级知识专家网友:蓝房子
  • 2021-01-17 18:05
这里假设string类型可能包含任意字符。否则,只需用不可能出现的字符分隔开即可。
因此,唯一的办法是将string的长度也写入到文件当中。下面是示例:
#include
#include
#include
#include
#include

inline void WriteString(std::ostream& ostr, std::string const& str) {
// 写入字符串长度
ostr << str.size() << "\n";
// 写入字符串
ostr.write(str.data(), str.size());
}

inline std::string ReadString(std::istream& istr) {
// 获取字符串长度
std::string line;
std::getline(istr, line);
std::istringstream tmp(line);
std::size_t size;
tmp >> size;
// 读取字符串
std::vector result(size);
istr.read(result.data(), size);
return std::string(result.begin(), result.end());
}

int main() {
std::string const filename = "t.txt", s1 = "string 1 \n Yeah!", s2 = "string 2 \\ Yep!";
{
std::ofstream ostr(filename);

WriteString(ostr, s1);
WriteString(ostr, s2);
}
{
std::ifstream istr(filename);
std::cout << (ReadString(istr) == s1 && ReadString(istr) == s2) << "\n";
}

return 0;
}
全部回答
  • 1楼网友:掌灯师
  • 2021-01-17 20:37
对头,不过const char* 在很大程度上限制了使用范围。
  • 2楼网友:行雁书
  • 2021-01-17 20:00
1楼的方法确实可以得到name不过这样不安全,最好自己开辟内存,不要直接指向
  • 3楼网友:舊物识亽
  • 2021-01-17 19:24
fopen( s.c_str( ), "r+" );
  • 4楼网友:玩世
  • 2021-01-17 18:13
string s="sfsff";
const char* name; //string的c_str函数返回的是const
name=s.c_str();
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息