Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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#u str()似乎在从c++;字符串类_C++_String - Fatal编程技术网

C++ c#u str()似乎在从c++;字符串类

C++ c#u str()似乎在从c++;字符串类,c++,string,C++,String,我很难将从文件中读取的字符串转换为整数 下面是我的代码的输出: Line Raw: 118 Line C: Elem: 0 Line Raw: 121 Line C: Elem: 0 Line Raw: 32 Line C: 32 Elem: 32 知道为什么转换成c_字符串会消除一些整数吗 导致这种情况的实际代码如下所示: vector<int> compressed; string encodedLine; while (getline(inputFile, encoded

我很难将从文件中读取的字符串转换为整数

下面是我的代码的输出:

Line Raw: 118
Line C:
Elem: 0

Line Raw: 121
Line C:
Elem: 0

Line Raw: 32
Line C: 32
Elem: 32
知道为什么转换成c_字符串会消除一些整数吗

导致这种情况的实际代码如下所示:

vector<int> compressed;
string encodedLine;
while (getline(inputFile, encodedLine)) {
    cout << "Line Raw: " << encodedLine << endl;
    cout << "Line C: " << encodedLine.c_str() << endl;
    int elem = atoi(encodedLine.c_str());
    cout << "Elem: " << elem << endl;
    compressed.push_back(elem);
}
更新: 谢谢你的快速回答!问题确实是文件中的空字符。我注意到字符串118显示为长度4。在完成hextump之后,我看到了“003138”,这证实了这一点。谢谢


关于如何写入文件(我在程序的另一个类中控制)而不预加NULL,有什么建议吗?

问题不在标准库中(多么令人惊讶),也不在这段代码中(稍微小一些的惊奇)。它可以完美地工作:


我怀疑您的输入文件中有空字符


std:string
保留空字符没有问题,但C字符串函数当然会将其视为字符串的结尾。

这是您的真实代码吗?换言之:有了这些代码,你就可以重现问题了?是的。。。这是我的真实代码。
encodedLine.size()
给了你什么?你给了我们代码和输出结果,但没有说明你的输入数据是否真实有效。在问题中包含您的输入数据。@CaptainObvlious-我包含了输入文件的转储。还有——我用这句话来检查:这确实是问题所在!谢谢
118
121
32