桔子菌 发表于 2024-2-3 15:01:12

CLion代码运行与VSCode不同

跟着C++PrimerPlus敲了一段代码:
//strtype1.cpp -- using the C++ string class

#include <iostream>
#include <string>

int main()
{
    char charr1;
    char charr2 = "jaguar";
    std::string str1;
    std::string str2 = "panther";

    std::cout << "Enter a kind of feline: ";
    std::cin >> charr1;
    std::cout << "Enter another kind of feline: ";
    std::cin >> str1;         //use cin for input
    std::cout << "Here are some felines:\n";
    std::cout << charr1 << "   " << charr2 << "   "
            << str1 << "   " << str2 << std::endl;            //use cout for output
    std::cout << "The third letter in " << charr2 << " is " << charr2 << std::endl;
    std::cout << "The third letter in " << str2 << " is " << str2 << std::endl;          //use array notation

    return 0;
}

在CLion上运行时会出现空格输出时不正确的问题,在VSCode上就不会。有没有大神知道这是什么情况?{:5_99:}

FishC 发表于 2024-2-3 15:01:39

CLion和VSCode是两个不同的集成开发环境(IDE),它们可能会在配置上有一些差异。我看到您的代码中有一些问题,可能是导致运行结果不同的原因。

首先,对于字符数组 `char charr2 = "jaguar";`,使用单引号 `'` 而不是双引号 `"` 来表示字符,因为字符是单个字符,而不是字符串。应该这样写:`char charr2 = 'j';`。

接下来,对于字符串变量 `std::string str2 = "panther";`,您需要包含头文件 `<string>`。在您的代码中已经包含了,所以没有问题。

然后,您使用了 `std::cout << charr1;` 和 `std::cout << str1;` 这样的语句来输出变量的值。但是,在之前没有对这两个变量进行初始化赋值,所以它们的值是未定义的。您可以通过给它们赋初值来解决这个问题:`char charr1 = 'a';` 和 `std::string str1 = "hello";`。

最后,您漏掉了代码的结尾。添加一个 `return 0;` 语句来结束 `main()` 函数。

综上所述,修复后的代码如下所示:

#include <iostream>
#include <string>

int main()
{
    char charr1 = 'a';
    char charr2 = 'j';
    std::string str1 = "hello";
    std::string str2 = "panther";

    std::cout << charr1;
    std::cout << charr2;
    std::cout << str1;
    std::cout << str2;

    return 0;
}

请尝试在CLion和VSCode中分别运行修复后的代码,看看是否可以得到相同的结果。如果仍然存在问题,请提供更多细节,我将尽力帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

学习编程中的Ben 发表于 2024-2-3 15:46:30

建议你使用using namespace std;
这样代码简便很多
#include <iostream>
#include <string>
using namespace std;
int main()
{
    char charr1;
    char charr2 = "jaguar";
    string str1;
    string str2 = "panther";

    cout << "Enter a kind of feline: ";
    cin >> charr1;
    cout << "Enter another kind of feline: ";
    cin >> str1;         //use cin for input
    cout << "Here are some felines:\n";
    cout << charr1 << "   " << charr2 << "   "
            << str1 << "   " << str2 << endl;            //use cout for output
    cout << "The third letter in " << charr2 << " is " << charr2 << endl;
    cout << "The third letter in " << str2 << " is " << str2 << endl;          //use array notation

    return 0;
}

学习编程中的Ben 发表于 2024-2-3 15:47:49

哪里不对了?

学习编程中的Ben 发表于 2024-2-3 15:49:10

代码感觉没问题

zhangchenyvn 发表于 2024-2-3 15:58:07

没问题吧

桔子菌 发表于 2024-2-3 16:17:58

学习编程中的Ben 发表于 2024-2-3 15:49
代码感觉没问题

CLion中输出时没有输出空格而是在输入结束后输出了空格

不二如是 发表于 2024-2-3 19:22:20

代码本身没有任何问题,它按照预期正确地输出了结果。

如果在 CLion 中运行时出现了空格输出不正确的问题,但在 VSCode 上没有,这可能是由于环境差异、配置设置或者是IDE内部处理标准输入输出的方式不同导致的。

CLion 和 VSCode 使用不同的终端模拟器来运行和显示程序的输出。

这些终端模拟器可能对空格、制表符以及其他非打印字符的处理方式不同,尤其是在涉及到缓冲、字符宽度和终端类型等方面。

以下是一些可能的原因和解决步骤:


[*]终端设置:检查CLion的终端设置,看看是否有与空格或输出格式相关的特定设置。
[*]字体和编码:不同的IDE可能使用不同的字体或字符编码,这可能会影响空格的显示方式。
[*]IDE版本和插件:确保CLion和所有相关插件都更新到最新版本,有时候这类问题可能是由于软件错误导致的。
[*]清理缓存:尝试清理IDE的缓存和重启IDE,有时候缓存可能会影响IDE的行为。
[*]运行配置:检查CLion中程序的运行配置,确保它们与VSCode中的配置相匹配。
[*]操作系统差异:如果你在不同的操作系统上运行CLion和VSCode,可能会有差异。每个操作系统处理终端输出的方式可能不同。
[*]重定向输出:作为测试,你可以尝试将输出重定向到文件,然后在编辑器中打开文件看是否存在同样的问题。

桔子菌 发表于 2024-2-3 19:32:15

不二如是 发表于 2024-2-3 19:22
代码本身没有任何问题,它按照预期正确地输出了结果。

如果在 CLion 中运行时出现了空格输出不正确的问 ...

感谢不二大大{:5_105:}
页: [1]
查看完整版本: CLion代码运行与VSCode不同