C++ 从ifstream中删除空白(在调用getline之前),可以执行如下操作:while(isspace(read.peek()))read.ignore();我懂了。那么,有没有一种简单的方法可以从字符串的开头删除“\n”?要从ifstream中删除空白(

C++ 从ifstream中删除空白(在调用getline之前),可以执行如下操作:while(isspace(read.peek()))read.ignore();我懂了。那么,有没有一种简单的方法可以从字符串的开头删除“\n”?要从ifstream中删除空白(,c++,random,fstream,C++,Random,Fstream,从ifstream中删除空白(在调用getline之前),可以执行如下操作:while(isspace(read.peek()))read.ignore();我懂了。那么,有没有一种简单的方法可以从字符串的开头删除“\n”?要从ifstream中删除空白(在调用getline之前),可以这样做:while(isspace(read.peek()))read.ignore();极好的解决方案!非常感谢!我从你发布的这个解决方案中学到了很多。再次感谢!极好的解决方案!非常感谢!我从你发布的这个解决方


从ifstream中删除空白(在调用getline之前),可以执行如下操作:while(isspace(read.peek()))read.ignore();我懂了。那么,有没有一种简单的方法可以从字符串的开头删除“\n”?要从ifstream中删除空白(在调用getline之前),可以这样做:while(isspace(read.peek()))read.ignore();极好的解决方案!非常感谢!我从你发布的这个解决方案中学到了很多。再次感谢!极好的解决方案!非常感谢!我从你发布的这个解决方案中学到了很多。再次感谢!
line
number one
#
line number two
int main()
{
    srand(time(0));
    ifstream read("myfile.dat");
    string line;
    string selected_line;
    int nlines = 0;
    while(getline(read, line, '#')) {
        if((rand() % ++nlines) == 0)
            selected_line = line;
    }
    // this is adding a \n at the beginning of the string
    cout << selected_line << endl; 
}
std::vector<std::string> allParagraphs;
std::string currentParagraph;

while (std::getline(read, line)) {        
    if (line == "#") { // modify this condition, if needed
        // paragraph ended, store to vector
        allParagraphs.push_back(currentParagraph);
        currentParagraph = "";
    else {
        // paragraph continues...
        if (!currentParagraph.empty()) {
            currentParagraph += "\n";
        }
        currentParagraph += line;
    }          
}

// store the last paragraph, as well
// (in case it was not terminated by #)
if (!currentParagraph.empty()) {
    allParagraphs.push_back(currentParagraph);
}

// this is not extremely random, but will get you started
size_t selectedIndex = rand() % allParagraphs.size();

std::string selectedParagraph = allParagraphs[selectedIndex];
size_t selectedIndex 
    = rand() / (double) (RAND_MAX + 1) * allParagraphs.size();
if ( line.substr(0,1) == "\n" ) { line = line.substr(1); }