我在使用名称中包含空格的C ++中打开文件时遇到问题。例如,要打开文件read me.txt
。
这是我到目前为止的代码,它涉及一个读取文件并将字数输出到控制台的命令:
string choice, word, fname;
ifstream input;
int l, count = 0;
if(choice == "wc" || choice == "WC" || choice == "Wc")
{
getline(cin, fname);
input.open(fname.c_str());
cout << fname << endl;
if(input.fail())
{
cerr << " Error: failed to open the file: " << fname << endl;
input.clear();
}
else
{
w = 0;
while (input >> word)
w++;
input.close();
count = w;
cout << fname << " has a Word Count of: " << count << " words \n" << endl;
}
}
我知道流函数c_str()
在空格后不能读取多个字符串。我在考虑使用子字符串,但我不完全确定如何继续。你能帮助我吗?
答案 0 :(得分:0)
你试过这个(http://www.cplusplus.com/forum/beginner/39687/):
在文字字符串中,'\'字符被解释为转义码,以允许您嵌入无法输入或不可打印的字符。例如,要在文字字符串中嵌入换行符,您不能在键入文字字符串时按Enter键,因为编辑器会通过实际开始新行来响应。所以你输入“\ n”,即“这是在第一行\ n这是在第二行”。要输入'\'字符,您需要输入两个斜杠来逃避它。第一个斜杠是转义字符,第二个斜杠是嵌入的斜杠字符。
示例:C:\ Program Files \ filename.txt
编辑: 用户不会仅输入转义字符文件名。然后程序必须处理空格和反斜杠的路径。 \ n指定新行,但它由转义字符后跟n字符组成。