簡體   English   中英

將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是實例的類對於許多類型都有聰明的重載, << ,包括charintconst char[] (對於字符串文字):

所以你可以寫

std::cout << "[" << i << "] --> " << letterGrades[i];

代替您的第一個printf

std::cout << "\n";

第二個。 您可以使用"\\t"將制表符插入流中。

所有這些都對性能造成了輕微的影響,這應該可以忽略不計。 您平台上的I / O。

另外,請考慮閱讀C ++:“ std :: endl”與“ \\ 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:""; 
}

讓我解釋一下代碼

  1. cout需要按位操作才能在流中傳遞。 這基本上意味着您需要使用“ <<”運算符來告訴它要打印什么。

  2. 最后一位(i%3==0)?endl:"" 如果您不熟悉? 運算符,它的作用是,如果()中出現的條件為true,它將評估:之前的部分,否則,將評估后面的部分。

例如:-

print((1>0)?"Hello":"World") \\ Output: Hello
print((false)?"Hello":"World") \\ Output: World
  1. %也是我們可以使用的整潔運算符。 它除以數字並返回余數。

例如:-

print(10%5) \\ Output: 0
print(5%2) \\ Output: 1

所以我用它來看看在第三列之后是否應該有一個行終止符endl (“ \\ n”),

希望這可以幫助

在第3、7、11等行之后插入換行符(或std :: endl)的最簡單方法可能是讓int計數每一步

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM