仅使用<iostream>重定向I / O [Windows]

时间:2017-01-18 17:57:08

标签: c++ eclipse visual-studio

  

[@ tl; dr]我有Visual Studio Ultimate 2013和Eclipse Neon v2(C ++),   我需要使用DOS格式重定向我的程序的输出,但是   我不知道怎么做。

     

我在Windows btw。

好的..所以我有这个课程作业,我必须写一个这样的程序:

#include <iostream>
#include <string>
using namespace std;

/* Check if the Character is lower case or not */
bool checkLowerCase(char c) {
    if (c >= 'a' && c <= 'z') return true;
    return false;
}

/*
* If there is any lower case letter, it will replace it will a upper case.
* example:
*   "Tauros" will become "TAUROS"
*   "auHU" will become "AUHU"
*/
string fixer(string s)
{
    char right = ('a' - 'A');
    string a = s;
    for (unsigned int i = 0; i < a.length(); i++)
    {
        if (checkLowerCase(a[i])) {
            a[i] = a[i] - right;
        }
    }
    return a;
}

int main(void)
{
    while (1) //infinite loop
    {
        string line;
        getline(cin, line);
        if (!cin) { //Professor wants us to only check end of input like this
            return 0;
        }
        line = fixer(line);
        cout << line << endl;
    }
}

输入是:

aaaaaa
bbbbbb
cccccc

输出结果为:

aaaaaa
AAAAAA
bbbbbb
BBBBBB
cccccc
CCCCCC

感谢您阅读此内容。好的,所以这就是我的问题。 输出都搞砸了,所以我需要将输出重定向到其他地方(至少是为了测试)。

我知道如何使用,将每一行保存在一个String数组中,如果需要重新分配然后打印阵列上的内容,但不幸的是,我的讲师要求我们只包括和 哦,我不知道它是否重要,但我们可能不会使用char *,只能使用类字符串。

我的讲师告诉我们,我们必须使用DOS格式。但我不知道该怎么做。如果有人可以告诉我如何重定向输入或者输出很简单......

我的PC上有Eclipse C ++(工作小故障)和Visual Studio Ultimate 2013(工作正常)。

[编辑]我在Windows上。

再次:我可能只包括和

有关更多信息,请参阅他在DOS格式上的幻灯片。

*For testing purposes one redirect to/from a file
*DOS formatting will have unexpected consequences
   – The end-of-line is the CR-NL combination
   – A line read from the file will end with CR
   – The CR character is the command to erase the
   previous line!

./main < infile.txt                   Input is from infile.txt
./main > outfile.txt                  Output is to outfile.txt
./main < infile.txt > outfile.txt     Both input and output are redirected

1 个答案:

答案 0 :(得分:0)

好的,所以......我找到了帮助我的指示:

https://msdn.microsoft.com/en-us/library/ms235639.aspx

我在VisualStudio中打开了我的项目文件夹,创建了2个文件。

  

input.txt中

     

output.txt的

我打开了我在PC上的VS2013开发人员命令提示符。

cd ["C://my_project_path"]       //go to my project folder
cl /EHsc file.cpp                
/* 
    cl /EHsc will compile my program (I think it only compiles one file at a time. 
    I have yet to test it).
*/
file < input.txt > output.txt    // this command will run my program

所以当我像这样运行我的程序时...我的程序将读取input.txt作为标准输入,而不是等待键盘的输入。当我尝试将某些东西打印到输出时,它会写在output.txt上。

  

[编辑]在我粘贴的链接的末尾,有关于如何编译多个文件的解释以及/ EHsc做得非常出色