将 printf 更改为 cout
changing printf to cout
我对 C++ 还是有点陌生,在使用 cout
方面需要一些帮助。
int main()
{
char letterGrades[25] = { 'a', 'b', 'c', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', };
for (int i = 0; i < 25; i++)
{
printf("[%d] --> %c", i, letterGrades[i]);
if (i == 3) // how can I print \n when i == 7 , 11 , 15 , 19....
{
printf("\n");
}
}
}
这就是我正在尝试做的,而且效果非常好。但是,我不知道如何使用 cout 编写这段代码。
此外,我会以 4 行表格格式打印结果。
所以结果看起来像这样
[0] --> A [1] --> A [2] --> A [3] --> A
[4] --> A [5] --> A [6] --> A [7] --> A
[8] --> A [9] --> A [10] --> A [11] --> A
其中 cout
是一个实例的 class 对许多类型的 <<
进行了巧妙的重载,包括 char
、int
和 const char[]
(对于字符串文字):
所以你可以这样写
std::cout << "[" << i << "] --> " << letterGrades[i];
代替您的第一个 printf
和
std::cout << "\n";
第二个。您可以使用 "\t"
向流中注入制表符。
所有这些都会对性能造成轻微影响,这应该可以忽略不计。 I/O 在您的平台上。
此外,考虑阅读 C++: "std::endl" vs "\n" 以进一步学习。
最后,使用
if (i % 4 == 3){
// i is 3, 7, 11, 15, 19, etc
}
为了您对定期换行符的条件检查。 %
是 余数 运算符。
for 循环内部是这样的:
std::cout << "[" << i << "]" << "-->" << letterGrades[i];
if (i == 3){
std::cout << "\n";
}
其实很简单
for (int i = 0; i < 25; i++)
{
cout << "[" << i << "] --> " << letterGrades[i] << (i%3==0)?endl:"";
}
让我解释一下代码
cout 采用按位运算传入流。这基本上意味着
你需要使用“<<”运算符来告诉它要打印什么。
最后一位(i%3==0)?endl:""
。如果您不熟悉 ?
运算符,它的作用是如果出现在 ()
中的条件为真,它将评估 :
之前的部分,如果不是,则它以后再评价
例如:-
print((1>0)?"Hello":"World") \ Output: Hello
print((false)?"Hello":"World") \ Output: World
%
也是我们可以使用的简洁运算符。它除以一个数和 returns 余数。
例如:-
print(10%5) \ Output: 0
print(5%2) \ Output: 1
所以我用它来查看第三列之后是否应该有一个行终止符endl
(“\n”),
希望对您有所帮助
在第 3、7、11 等行之后插入换行符(或 std::endl)的最简单方法可能是有一个整数来计算每一步
int endl_count = 1;
for (int i = 0; i < 25; i++)
{
std::cout << '[' << i << ']' << " --> " << letterGrades[i];
if (endl_count == 3) {
endl_count = 0;
std::cout << std::endl;
}
endl_count++;
}
另外:要获取数组的大小,您可以这样做
(sizeof(array) / sizeof(datatype))
所以在你的情况下你可以这样做
for (int i = 0; i < (sizeof(letterGrades) / sizeof(char)); i++)
而不是硬编码 25
我对 C++ 还是有点陌生,在使用 cout
方面需要一些帮助。
int main()
{
char letterGrades[25] = { 'a', 'b', 'c', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', };
for (int i = 0; i < 25; i++)
{
printf("[%d] --> %c", i, letterGrades[i]);
if (i == 3) // how can I print \n when i == 7 , 11 , 15 , 19....
{
printf("\n");
}
}
}
这就是我正在尝试做的,而且效果非常好。但是,我不知道如何使用 cout 编写这段代码。
此外,我会以 4 行表格格式打印结果。 所以结果看起来像这样
[0] --> A [1] --> A [2] --> A [3] --> A
[4] --> A [5] --> A [6] --> A [7] --> A
[8] --> A [9] --> A [10] --> A [11] --> A
其中 cout
是一个实例的 class 对许多类型的 <<
进行了巧妙的重载,包括 char
、int
和 const char[]
(对于字符串文字):
所以你可以这样写
std::cout << "[" << i << "] --> " << letterGrades[i];
代替您的第一个 printf
和
std::cout << "\n";
第二个。您可以使用 "\t"
向流中注入制表符。
所有这些都会对性能造成轻微影响,这应该可以忽略不计。 I/O 在您的平台上。
此外,考虑阅读 C++: "std::endl" vs "\n" 以进一步学习。
最后,使用
if (i % 4 == 3){
// i is 3, 7, 11, 15, 19, etc
}
为了您对定期换行符的条件检查。 %
是 余数 运算符。
for 循环内部是这样的:
std::cout << "[" << i << "]" << "-->" << letterGrades[i];
if (i == 3){
std::cout << "\n";
}
其实很简单
for (int i = 0; i < 25; i++)
{
cout << "[" << i << "] --> " << letterGrades[i] << (i%3==0)?endl:"";
}
让我解释一下代码
cout 采用按位运算传入流。这基本上意味着 你需要使用“<<”运算符来告诉它要打印什么。
最后一位
(i%3==0)?endl:""
。如果您不熟悉?
运算符,它的作用是如果出现在()
中的条件为真,它将评估:
之前的部分,如果不是,则它以后再评价
例如:-
print((1>0)?"Hello":"World") \ Output: Hello
print((false)?"Hello":"World") \ Output: World
%
也是我们可以使用的简洁运算符。它除以一个数和 returns 余数。
例如:-
print(10%5) \ Output: 0
print(5%2) \ Output: 1
所以我用它来查看第三列之后是否应该有一个行终止符endl
(“\n”),
希望对您有所帮助
在第 3、7、11 等行之后插入换行符(或 std::endl)的最简单方法可能是有一个整数来计算每一步
int endl_count = 1;
for (int i = 0; i < 25; i++)
{
std::cout << '[' << i << ']' << " --> " << letterGrades[i];
if (endl_count == 3) {
endl_count = 0;
std::cout << std::endl;
}
endl_count++;
}
另外:要获取数组的大小,您可以这样做
(sizeof(array) / sizeof(datatype))
所以在你的情况下你可以这样做
for (int i = 0; i < (sizeof(letterGrades) / sizeof(char)); i++)
而不是硬编码 25