Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 程序未从文本文件c++;_C++_String_Function - Fatal编程技术网

C++ 程序未从文本文件c++;

C++ 程序未从文本文件c++;,c++,string,function,C++,String,Function,我试图使用函数从文本文件中读取某一行,以备以后使用,但它似乎没有返回字符串。功能如下: std::vector<std::string> TextArray(string filePath) { int arrayNum = 0; std::vector<std::string> stringArray; ifstream file (filePath); std::string str; while (std::getline(f

我试图使用函数从文本文件中读取某一行,以备以后使用,但它似乎没有返回字符串。功能如下:

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 TextArray(字符串文件路径){
int-arrayNum=0;
std::向量字符串数组;
ifstream文件(filePath);
std::字符串str;
while(std::getline(文件,str)){
stringArray.push_-back(str);
}
return stringArray;//返回一个数组
}
内干管:

std::vector<std::string> fileString = TextArray("c:/computerAi/saved");
std::cout << fileString[1] << std::endl;
std::vector fileString=TextArray(“c:/computerAi/saved”);

std::cout我怀疑路径可能是问题所在<代码>“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;
}
#包括
#包括
#包括
#包括
std::vector TextArray(std::string文件路径)
{
int-arrayNum=0;
std::向量字符串数组;
std::ifstream文件(filePath.c_str());
std::字符串str;
while(std::getline(文件,str))
{
stringArray.push_-back(str);
}
return stringArray;//返回一个数组
}
int _tmain(int argc,_TCHAR*argv[]
{
std::vector fileString=TextArray(“c:\\temp\\testing.txt”);

std::不能改为尝试fileString[0]。当您使用调试器单步执行程序时,执行
push_-back
us的行有多少次?您确定
c:/computerAi/saved
将始终包含至少两行吗?就像您试图引用fileString[1]一样虽然它可以是空的。注意:a
/
在路径中是有效的,但是以小写字母“c”开头的路径是可疑的。c:\computerAi是一个目录谢谢我放学后会尝试这个!