请问可以用测试代码实现控制cin内容吗?
新手在学c++,练习题很多是利用cin之类输入信息然后运行。会给出测试点,但是需要手敲,需要换行的时候ctrl+v就不好用了。因为cin通常是分段使用的,把结果挨个覆盖的话,测试完需要挨个注释掉很容易漏。请问可以用代码把字符串预先输入cin里,然后运行时不需要手敲直接从cin里读已有的字符串吗?
我知道类似Java的JUnit,c++也有类似框架,奈何用的不灵清,况且感觉覆盖cin跟简单些。
为了加快程序的调试过程,减少手工输入造成的时间浪费,建议使用CMD中的输入输出重定向功能。
下面举一个简单的例子作为使用方法演示
现在有一个需要测试的c++程序,为了简单起见,我们选择最简单的A+B Problem。程序代码如下:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
将其编译链接后我们可以得到可执行程序add.exe
下面开始调试。
在可执行程序所在文件夹下新建一个文本文档,其中存放我们所要求的所有输入数据,并命名为data.in
接下来我们需要打开CMD(按Win+R打开运行,输入cmd并回车就打开cmd),
先切换当前路径到可执行程序所在文件夹
切换路径可使用“cd 路径”命令
然后就可以使用重定向功能了。
输入命令add.exe < data.in > soulution.out
执行完毕后,程序的输出就会保持到soulution.out文件中。
用记事本打开查看即可。
可以用stringstream,把任意普通类型数据(包括int、double等等)输入到字符串(string)里面。如果你不想换cin这个词,有两种方法(当然,你可以用Word替换一下):
1. 不要include< iostream>,不要using namespace std;,把using namespace语句换成using std::语句,不要using std::cin。然后:stringstream cin;
就行了。
2. 在include语句 后面宏定义:#define cin str_in
然后在要用cin到字符串的语句前面stringstream str_in;
。
stringstream要包括头文件< sstream>和用命名空间std。
可以,需要包含一个头文件