C++代码在同一行中未显示输出。

18 浏览
0 Comments

C++代码在同一行中未显示输出。

#include

using namespace std;

int main()

{

char str[10] = "Anmol" ;

int age = 17 ;

cout << "在这里输入你的名字 :- " ;

fgets(str, sizeof(str), stdin) ;

cout << "在这里输入你的年龄 :- " ;

cin >> age ;

cout << "你好世界,我叫" << str << ",今年" << age << "岁" ;

return 0 ;

}

在运行该代码时,编译器会在不同的行中输出结果,如下图所示:

程序执行的结果

0
0 Comments

C++代码在输出时无法在同一行中显示的问题,可能是由于字符串中的'\r\n'和'\n\r'导致的。可以尝试使用替换函数将这些字符替换为空字符串。可以参考以下链接了解如何在字符串中进行替换操作:How to replace all occurrences of a character in string?

鉴于提问者正在使用XTerm,我怀疑他们并没有使用Windows的换行符。然而,所有的换行符都会被解释为C++中的\n字符。因此,可以尝试在字符串中将'\r\n'和'\n\r'替换为空字符串来解决问题。

0
0 Comments

在上述代码中,使用了fgets()函数从键盘读取字符串。fgets()函数会同时读取字符串和回车符的ASCII码,回车符的ASCII码是13(回车 - CR)。因此,上述代码会将'str'末尾的回车符也当作字符串的一部分,导致输出在下一行。

解决方法是使用gets_s()函数从键盘获取字符串。下面是修改后的代码:

#include
using namespace std;
int main()
{
    char str[10] = "Anmol";
    int age = 17;
    cout << "Enter your name here :- ";
    gets_s(str);
    cout << "Enter your age here :- ";
    cin >> age;
    cout << "Hello World, It's " << str << " And my age is " << age;
    return 0;
}

你可以在附带的截图中看到输出结果。

截图链接:i.stack.imgur.com/DaKKr.png

0
0 Comments

这个问题的出现原因是在C++代码中,输出的内容没有在同一行显示。解决方法是在每个输出语句之后添加`std::flush`来刷新输出缓冲区。

以下是修改后的代码:

#include 
#include 
using namespace std;
int main()
{
    string str;
    int age;
    cout << "Enter your name here :- " << flush;
    cin >> str;
    cout << "Enter your age here :- " << flush;
    cin >> age ;
    cout << "Hello World, It's " << str 
         << " And my age is " << age << endl;
    return 0 ;
}

这样修改后,输出的内容将在同一行显示。

0