中易网

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

答案:5  悬赏:0  
解决时间 2021-01-18 17:50
如何在c++中循环读取多个文件(连着的数字文件名)
最佳答案
这里假设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;
}
全部回答
对头,不过const char* 在很大程度上限制了使用范围。
1楼的方法确实可以得到name不过这样不安全,最好自己开辟内存,不要直接指向
fopen( s.c_str( ), "r+" );
string s="sfsff";
const char* name; //string的c_str函数返回的是const
name=s.c_str();
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
傅雷家书1959年主要内容(200字)
招蚊子与什么有关?
今天晚上彩票开什么
1到32任意6个数想加等于122
中国传统绘画中的六法原则的提出者是:A顾恺
vue2.0中data里面里面的值可以是函数吗
(2x^5-x^4-18x^3-28x^2-25x-15)除以(2x+3)
是人决定了历史还是历史决定了人
香榭雅舍集成墙面有谁关注过?想请教。
求解蒂芙尼戒指美国尺寸和中国的换算!
我是男生,有男孩子在吗?
{偶数}表示偶数集对吗
佳能US850IS相机的镜头怎么换?急......
暗黑3洪荒装备怎么出
h型钢148*100*6*9每吨多少钱
推荐资讯
我的小米3只支持3g 我办联通4g卡能用吗
这颗花这是怎么了 求诊断
开心麻将馆地址在什么地方,想过去办事
宠物沐浴露什么牌子的比较好
请问儒释道的宗旨分别是什么?
想在丽江开客栈,需要多少钱
日日顺快递昨天六点从大理发送到保山今天能到
他是男的还是女的
TCL空调运行中,出现E4。是什么故障
汽车备胎四年没还用过,是不是已经自然老化了
重庆菜园坝火车站到解放碑暖心阁公寓
我的征信有过逾期,但工商手机银行融e借显示
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?