【发布时间】:2019-01-21 15:30:10
【问题描述】:
我正在做一个计算器。
我从 GUI 检索用户输入并将其存储在 std::vector<char> c
现在我需要将c中的每个字符都添加到std::cin,这是因为计算器引擎是基于std::cin的,我只想在上面添加一个GUI层。
我写了一些示例代码来演示我的问题,这不是实际的应用程序:
#include <iostream>
#include <vector>
int main()
{
int length = 6;
std::vector<char> in(length);
in[0] = 'H';
in[1] = 'e';
in[2] = 'l';
in[3] = 'l';
in[4] = 'o';
in[5] = '\0';
for (int i = 0; i < length; ++i)
{
char a = in[i];
std::cout << "a: " << a << std::endl;
std::cin.putback(a);
}
char y = 0;
while(std::cin >> y)
{
std::cout << "y: " << y << std::endl;
if (y == '\0')
{
std::cout << "This is the end!" << std::endl;
}
}
}
我的预期结果是从while(std::cin >> y) 循环中获得输出。
问题是没有输出。
编辑:
思考我的问题的另一种方式是。假设我制作了一个依赖于来自std::cin 的用户输入的程序,并且输入可以是任何主要类型。现在,如果我想通过在没有 shellscripting 的情况下给它输入来测试程序,我该怎么做(从程序的源代码中)?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
你希望这段代码做什么,它实际上做了什么?
-
请注意,
putback通常对您可以放回的字符数有限制,该限制通常为 1。 -
@PeteBecker 即使它是 1,它也会打印一些东西。根本没有输出