好吧,有些人可能记得我之前,我是编程新手,所以我可能看起来没有达到许多其他人的水平。然而,目前,我被卡住了。
int main(int argc, char* argv[]) {
string temp,input,output;//store input from file, and get which file//
ofstream out("output.txt");
if(argc == 3)
{
if(ifstream(argv[2]))
{
input = argv[2];
ifstream in(input);
while(in.good())
{
in >> temp;
ReverseWord(temp);
cout << temp << endl;
out << temp << endl;
}
out.close();
in.close();
}
}
}这里的代码旨在通过键入"revstr < input.txt“并以input.txt作为文件名来颠倒从文件中获取的单词的字母顺序。然而,目前程序只是立即打开和关闭,没有任何事情发生,也没有任何输入到控制台中。有人知道怎么解决这个问题吗?
发布于 2013-01-27 01:38:40
如果你以revstr < input.text的身份调用你的程序,你的main()函数将会被调用(在通常的平台上):
argv = { "revstr", NULL }
argc = 1在本例中,通过读取std::cin获取input.txt的内容。这就是“输入重定向”的意思:您的标准输入流被重定向为从文件读取,而不是从键盘(也称为终端)设备读取。在这种情况下,不需要处理文件名。
要将文件名作为参数传递,请使用revstr input.txt。应该使用以下参数调用main()
argv = { "revstr", "input.txt", NULL }
argc = 2 因此,文件名将作为argv[1]可用。
前一种情况下的行为通常是由于命令shell,它将'<‘视为重定向指令(结束前面的命令)。你可能已经期望得到
argv = { "revstr", "<", "input.txt", NULL }
argc = 3 为此,您需要应用某种形式的引号或转义来禁用外壳行为,例如revstr "<" input.txt或revstr \< input.txt。但据我所知,你想要重定向。在这种情况下,忘记argc和argv,只需从std::cin读取输入即可。
https://stackoverflow.com/questions/14539420
复制相似问题