簡體   English   中英

無法使用std :: cout打印/輸出任何內容

[英]Cannot print/output anything with std::cout

我在這里有代碼: http : //ideone.com/Q6kzBQ

#include <iostream>
#include <string>

int main(){
    std::cout << "yep" << std::endl;
    std::string message;
    while (true){
        int col;
        std::cin >> col;
        if (col == 0){
            return 0;
        }
        else if (col > 0){
            std::string letter;
            std::cin >> letter;
            //std::cout << "yep" << std::endl;
            int letter_length = letter.size();
            int row = letter_length / col;

            message = "";

            for (int i = 0; i < col; i++){
                int current_row = 0;

                while (current_row != row){
                    if ((current_row % 2)){
                        message += letter[i + current_row * col];
                        std::cout<<"current:" << message<<std::endl;
                    }
                    else {
                        message += letter[current_row * (col + 1) - i - 1];
                        std::cout<<"current:" << message<<std::endl;
                    }
                    current_row++;
                    //std::cout<<"current:" << message<<std::endl;
                }
            }
        }
        std::cout << message <<std::endl;
    }
}

我輸入了一些輸入,但是它什么都不輸出,甚至在一開始都不輸出。 有沒有我做不正確的事情? cout是從這里來的,所以我認為我已經包含了我需要的一切。 但是,在ideone.com的標准輸出區域上什么也沒出現。 我沒有在任何其他編譯器上嘗試過此代碼。 有什么建議嗎? 有時,它的確輸出3空行(如果我取出所有其他輕浮的輸出,則對於我的輸入,應該有2行包含字符串+新行,因此3行正確)。

我使用的輸入:

5
共享信息共享
3
肝硬化
0

當您這樣做時:

message += letter[current_row * (col + 1) - i - 1];

您可能不足以導致未定義行為的數組索引,因此您可能會或可能不會獲得任何輸出。

修改計算以確保生成的索引在letter.size()

我想您實際上想要的是:

message += letter[(current_row + 1) * col - i - 1];
//                ^^^^^^^^^^^^^^^^^^^^^^^

要達到當前行中最后一個字符以外的字符,您需要(current_row + 1) * col而不是current_row * (col + 1)

演示版

一種無輸出的可能解釋

當您訪問超出范圍的字符時,您將在流中結束打印一些亂碼。 當嘗試將此流打印在網頁上時,Web引擎拒絕打印任何內容。

手動運行您的代碼。

  1. 第一次運行將產生以下結果:

current_row = 0

current_row%2 = 0

我= 0

->您的代碼將進入“其他”條件:

訊息+ = letter [0 *(5 + 1)-0-1] //違反了letter [-1]!

  1. 該索引可能會溢出數組:

字母[i + current_row * col]; // i + current_row * 5

暫無
暫無

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

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