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