当使用 ifstream 类从输入文件中读取单词时,我使用了以下表达式:
#include <iostream>
#include <fstream>
int main(int argc, char *argv[])
{
std::ifstream inputStream(myFile.txt);
std::string myString;
myFile.open()
while(myFile.good())
{
myFile >> myString;
printf("%s \n", myString);
}
return 0;
}
myFile.txt 的内容是:“这是一个简单的程序。”
使用 g++ 编译器按预期编译和执行。
但是,使用 msvc 2008 编译相同的代码时,在提取运算符 (>>) 处返回错误,要求我将 std::string 替换为已初始化的字符数组或任何受支持的本机类型。
这让我大吃一惊,因为我期望标准库的使用在不同的实现中是相同的。
我了解编译错误并知道通过使用 c_str() 修复它的方法。
但是,如果有人能澄清为什么标准库的使用在不同平台上是不同的,那将对我有很大帮助。
对我来说,它不再是标准了!
编辑:代码更新为完整。myFile.txt 的内容已更新。