【问题标题】:populating array of strings a for loop?填充字符串数组的for循环?
【发布时间】:2022-12-10 06:06:19
【问题描述】:

我想在 for 循环的帮助下填充一个字符串数组并打印它们

string R_name[3] = {""};

for(int i=0; i<=2; i++){
    R_name[i] = 'Small';
    cout<<R_name[j]<<" "<< endl;
}

它给了我错误:隐式常量转换溢出 [-Woverflow] 并打印

l
l
l 
?

【问题讨论】:

标签: c++ arrays for-loop


【解决方案1】:

你不小心使用了一个多字符文字代替字符串字面量通过使用单引号 ' 而不是双引号 "

  • 'Small' : 多字符文字
  • "Small":字符串文字

它是非标准,但对于那些支持它的编译器,当你分配一个多字符文字就像 'Small'std::string,即使它是合法的,你仍然应该收到大量警告,可能包括:

  • 字符常量对其类型而言太长
    • (当您使用超过 4 个字符时,因为它通常将每个字符解释为一个字节并试图将其放入 int
  • 从“int”到“char”的转换溢出将值从“nnnnnnn”更改为“c”
    • (因为它试图选择一种类型分配给您的字符串,并选择了char,它通常没有int那么大,所以有溢出。)

对于您的情况,解决方案是将 'Small' 更改为 "Small"

【讨论】:

  • 哦,是的,它奏效了。谢谢你!
【解决方案2】:
   string R_name[3] = {""};

for(int i=0; i<=2; i++){
    R_name[i] = "Small";
    cout<<R_name[i]<<" "<< endl;
}

通过这种方式,您可以填充字符串数组并打印它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多