【发布时间】:2017-02-01 22:38:36
【问题描述】:
大家好,这是我的第一篇文章,所以如果我犯了任何错误,例如信息不足等,请告诉我,这样我就不会再犯了。
所以我的问题是我需要获取文件的内容,然后将它们输入到我正在工作的字符串中。但是,在 while 循环结束后,如果我尝试在 while 循环之外使用该字符串并操作字符串的内容。字符串为空白,似乎没有内容。我通过使用 std::cout 行确定了这一点。我认为这是一个范围问题,但我不确定如何解决它。以下是与问题有关的代码,任何提示或帮助将不胜感激!
std::string str;
std::ifstream file;
while(!file.eof()){
getline(file, str);
std::cout << str << "";
}
file.close();
std::cout << str << "";
std::map<std::string, int> map;
for(int i = 0; i < str.length(); ++i){
std::string sub = str.substr(i, k);
std::cout << sub << std::endl;
map.insert(make_pair(sub, 1));
}
std::cout << "" << std::endl;
另外,我试图将字符串切成大小 k,这是在代码的不同部分定义的变量,所以我在 C++ 中使用了 substr 方法,我相信这是有效的,因为当我把它放入while 循环我可以打印出文件的内容,但格式已关闭,我认为这是因为 while 循环运行方式的性质,但我不确定,如果我错了或有任何误解,请纠正我.
【问题讨论】:
-
一个你不应该再犯的明显错误是显示的代码不能满足minimal reproducible example的所有要求。
-
好的,我刚刚阅读了那个文档,我明白了,谢谢你的指点!
标签: c++ string while-loop scope cout