程序未从文本文件 c++ 中打印出字符串
Posted
技术标签:
【中文标题】程序未从文本文件 c++ 中打印出字符串【英文标题】:Program not printing out string from text file c++ 【发布时间】:2014-11-17 04:29:05 【问题描述】:我正在尝试使用函数从文本文件中读取某一行以供以后使用,但它似乎没有返回字符串。函数如下:
std::vector<std::string> TextArray(string filePath)
int arrayNum = 0;
std::vector<std::string> stringArray;
ifstream file (filePath);
std::string str;
while (std::getline(file,str))
stringArray.push_back(str);
return stringArray;//returns an array
内部主要:
std::vector<std::string> fileString = TextArray("c:/computerAi/saved");
std::cout << fileString[1] << std::endl;
我收到一条错误消息,提示“向量下标超出范围”
【问题讨论】:
改用 fileString[0]。 当您使用调试器单步执行程序时,push_back
us 行执行了多少次?
您确定c:/computerAi/saved
将始终包含至少两行吗?就像您试图引用 fileString[1] 一样,它可以是空的。
【参考方案1】:
我怀疑路径可能是问题所在。 "c:/computerAi/saved"
不是有效路径。应该是"C:\\computerAi\\saved"
。双反斜杠是必要的,因为反斜杠是 C/C++ 中的转义字符。如果文件流无法打开,则向量可能为空。另外,我在这里假设C:\computerAi\saved
实际上是一个文件而不是一个目录。
另外,正如 bvj 在评论中提到的,下标 1 是向量中的第二个元素,而不是第一个元素。因此,如果您想要第一个元素,请尝试使用 fileString[0]
而不是 fileString[1]
。
编辑:我仍然怀疑路径是问题所在。以下程序适用于我:
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
std::vector<std::string> TextArray(std::string filePath)
int arrayNum = 0;
std::vector<std::string> stringArray;
std::ifstream file(filePath.c_str());
std::string str;
while (std::getline(file,str))
stringArray.push_back(str);
return stringArray;//returns an array
int _tmain(int argc, _TCHAR* argv[])
std::vector<std::string> fileString = TextArray("c:\\temp\\testing.txt");
std::cout << fileString[1] << std::endl;
return 0;
当我使用无效路径(不存在的文件)尝试该程序时,我得到了问题描述的确切行为。当我尝试使用有效路径时,它返回了输入文件的第二行,完全符合预期。
【讨论】:
注意:/
在路径中有效,但以小写“c”开头的路径是可疑的。
C:\computerAi 是一个目录
谢谢我放学后试试这个!以上是关于程序未从文本文件 c++ 中打印出字符串的主要内容,如果未能解决你的问题,请参考以下文章