为什么我不能做
cout << 3*" ";
错误:
E:\C++\test\main.cpp|12|error: invalid operands of types 'int.' and 'const char [2]' to binary 'operator*'
答案 0 :(得分:5)
某些语言允许以这种方式使用乘法运算符。例如,Python允许您编写:
3*" "
并将其评估为
" "
但是C ++不允许使用乘法运算符。这正是编译错误告诉你的。
您正在尝试创建包含三个空格的字符串。例如,通过使用标准字符串类的填充构造函数来执行此操作:
std::string(3, ' ')
并将其发送至cout
:
std::cout << std::string(3, ' ');
答案 1 :(得分:2)
因为operator*
没有允许操作数int
和const char [2]
为了简单起见,你实际上永远不能将4乘以你好,所以为什么要在c ++中允许它?
答案 2 :(得分:1)
正如错误所述,没有为operator *
类型定义int
而const char [2]
(const char [2]
是字符串文字的类型" "
)
您可以使用class std :: string进行此操作。例如
std::cout << std::string( 3, ' ' );
;
甚至可以使用标准算法std::fill_n
例如
std::fill_n( std::ostream_iterator<char>( std::cout ), 3, ' ' );
有很多方法可以完成这项任务。