如何在不创建新行的情况下使用cin输入变量?

时间:2013-03-04 19:22:25

标签: c++ windows visual-studio

每当我使用cin输入变量时,在一次点击后,它会自动转到新行。我很好奇是否可以使用cin而无需使用新行。我想在命令提示符的同一行中cincout多个事情。这可能吗?

7 个答案:

答案 0 :(得分:8)

您无法使用cin或任何其他标准输入。但肯定有可能获得你想要的效果。我看到你使用Visual Studio在Windows上,所以你可以使用_getch。这是一个读取到下一个空格并将结果存储在字符串中的示例。

#include <conio.h> // for _getch

std::string get_word()
{
    std::string word;
    char c = _getch();
    while (!std::isspace(c))
    {
        word.push_back(c);
        std::cout << c;
        c = _getch();
    }
    std::cout << c;
    return word;
}

这不是很好。例如,它不能很好地处理非打印字符输入。但它应该让你知道你需要做什么。您可能也对Windows API keyboard functions感兴趣。

如果您想要更广泛的受众群体,您需要查看一些跨平台的资源库,例如SFMLSDL

答案 1 :(得分:4)

您也可以使用空格输入而不是输入 像这样的东西:

cin >> a >> b >> c;

并在输入中键入

10 20 30

然后

a=10
b=20
c=30 

答案 2 :(得分:2)

正如其他人所说,您不能使用cin执行此操作,但可以使用getchar()执行此操作。你需要做的是:

  1. 使用getchar()单独收集每个字符(例如,在读入时将每个字符添加到string的末尾),然后
  2. 阅读每个字符后,确定您何时达到一个变量值的结尾(例如,通过检测输入中的一个或多个' '字符,如果您正在阅读int或{ {1}}值),然后
  3. 如果您已到达变量文本的末尾,请将您构建的字符串转换为相应类型的变量(例如doubleint等。 ),然后
  4. 将任何内容输出到可能需要的行,然后
  5. 继续阅读您正在阅读的下一个变量。
  6. 强有力地处理错误会很复杂,所以我没有为此编写任何代码,但你可以看到你可以使用的方法。

答案 3 :(得分:1)

我不认为你想做什么可以用cin来实现。您可以做的是将所有输入写入一行,并使用您选择的分隔符,并解析输入字符串。

答案 4 :(得分:0)

这是不可能的。引用@Bo Persson,它不是由C ++控制的,而是控制台窗口。

答案 5 :(得分:0)

只需使用gotoxy语句即可。您可以按“输入”并在同一行中输入值 例如。在输入3 * 3矩阵时:

'#include<iostream.h>
#include<conio.h>
void main()
{clrscr();
int a[20][20],x,y;
cout<<"Enter the matrix:\n ";
for(int r=2;r<7;r+=2)
for(int c=2;c<7;c+=2)
{gotoxy(c,r);
cin>>a[r][c];
}
getch();}'

答案 6 :(得分:0)

我无法发表评论,但如果你在整数之间留出空格,那么你可以获得所需的效果。这也适用于cin

int a, b, c;
cin>>a; cin>>b; cin>>c;

如果您输入的值为10 20 30,则它们将分别存储在a,b和c中。