在C控制台程序中读取完整行的最简单方法是什么?输入的文本可能具有可变长度,我们无法对其内容进行任何假设.
有机器(或编译器),在哪里sizeof(char) != 1?
C99标准是否说sizeof(char)标准合规性实施必须正好1?如果有,请给我部分编号和引文.
更新:
如果我有一台机器(CPU),它不能寻址字节(最小读取是4个字节,对齐),但只有4-s的字节(uint32_t),这个机器的编译器可以定义 sizeof(char)为4吗?sizeof(char)将是1,但char将有32位(CHAR_BIT宏)
Update2: 但是sizeof结果不是BYTES!这是CHAR的大小.char可以是2个字节,或者(可能是)7位?
Update3:
好的.所有机器都有sizeof(char) == 1.但机器有CHAR_BIT > 8什么?
首先,看看下面的简单代码.
int main(){
char *name;
cout << "Enter your name: ";
cin >> name;
cout << "Your name is: " << name;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
前面的代码给了我一个错误warning: deprecated conversion from string constant to 'char*'.
但我通过以下方式解决了这个问题:
const char *name;
Run Code Online (Sandbox Code Playgroud)
编译代码后,我有另一个错误no match for 'operator>>' (operand types are 'std::istream {aka std::basic_istream<char>}' and 'const char*').
上一次错误的原因是什么,以及如何解决?