鱼C论坛

 找回密码
 立即注册
查看: 777|回复: 8

[已解决]CLion代码运行与VSCode不同

[复制链接]
发表于 2024-2-3 15:01:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

#include <iostream>
#include <string>

int main()
{
    char charr1[20];
    char charr2[20] = "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[2] << std::endl;
    std::cout << "The third letter in " << str2 << " is " << str2[2] << std::endl;          //use array notation

    return 0;
}

在CLion上运行时会出现空格输出时不正确的问题,在VSCode上就不会。有没有大神知道这是什么情况?
最佳答案
2024-2-3 19:22:20
代码本身没有任何问题,它按照预期正确地输出了结果。

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

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

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

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

  • 终端设置:检查CLion的终端设置,看看是否有与空格或输出格式相关的特定设置。
  • 字体和编码:不同的IDE可能使用不同的字体或字符编码,这可能会影响空格的显示方式。
  • IDE版本和插件:确保CLion和所有相关插件都更新到最新版本,有时候这类问题可能是由于软件错误导致的。
  • 清理缓存:尝试清理IDE的缓存和重启IDE,有时候缓存可能会影响IDE的行为。
  • 运行配置:检查CLion中程序的运行配置,确保它们与VSCode中的配置相匹配。
  • 操作系统差异:如果你在不同的操作系统上运行CLion和VSCode,可能会有差异。每个操作系统处理终端输出的方式可能不同。
  • 重定向输出:作为测试,你可以尝试将输出重定向到文件,然后在编辑器中打开文件看是否存在同样的问题。
屏幕截图 2024-02-03 150012.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-3 15:46:30 | 显示全部楼层
建议你使用using namespace std;
这样代码简便很多
#include <iostream>
#include <string>
using namespace std;
int main()
{
    char charr1[20];
    char charr2[20] = "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[2] << endl;
    cout << "The third letter in " << str2 << " is " << str2[2] << endl;          //use array notation

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-3 15:47:49 | 显示全部楼层
哪里不对了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-3 15:49:10 | 显示全部楼层
代码感觉没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-3 15:58:07 | 显示全部楼层
没问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-3 16:17:58 | 显示全部楼层

CLion中输出时没有输出空格而是在输入结束后输出了空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-3 19:22:20 | 显示全部楼层    本楼为最佳答案   
代码本身没有任何问题,它按照预期正确地输出了结果。

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

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

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

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

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

使用道具 举报

 楼主| 发表于 2024-2-3 19:32:15 | 显示全部楼层
不二如是 发表于 2024-2-3 19:22
代码本身没有任何问题,它按照预期正确地输出了结果。

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

感谢不二大大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 10:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表