为什么我的函数没有运行?

Why aren't my functions running?

本文关键字:运行 我的 函数 为什么      更新时间:2023-10-16

我是一个初学者,我正试图掌握这个c++作业的窍门。我应该读取一个文件并将其放入一个向量中,对其排序,然后用三个独立的非成员函数将其输出到一个新文件中,但由于某种原因,它们无法运行。从来没有一个新的文件输出,我甚至把完成计数放在那里,以测试函数是否在运行,但每次我都一无所获。如果我能得到一些帮助,我将非常感激,谢谢!

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include "stdafx.h"

using namespace std;
void readtoVector(vector<string>& weblog)
{
    string line;
    fstream myFile;
    myFile.open("weblog.txt");
    if (myFile.fail()){
        cerr << "File not available" << endl;
    }
    if (myFile.is_open()){
        for (line; getline(myFile, line);){
            weblog.push_back(line);
        }
        myFile.close();
    }
}
void sortVector(vector<string>& weblog)
{
    sort(weblog.begin(), weblog.end());
}
void writeVector(const vector<string>& weblog)
{
    ofstream myFile;
    myFile.open("newWeblog.txt");
    for (int i = 0; i > weblog.size; ++i){
        myFile << weblog[i] << endl;
    }
    myFile.close();
    cout << "done";
}
int main()
{
    vector<string> weblog;
    readtoVector(weblog);
    sortVector(weblog);
    writeVector(weblog);
    system("pause");
    return 0;
}
编辑:修复了readtoVector
中的引用问题

您忘记为readtoVector的参数使用引用了。该函数操作的是vector的本地副本;

void readtoVector(vector<string> weblog)中,您将向量的副本发送到函数中,而不是实际的,然后在函数中填充容器。因此,当函数调用返回时,vector被返回到堆中。

你应该发送引用,就像你发送其他函数一样:

void readtoVector(vector<string>& weblog)

除此之外,你的代码没有编译。行

for (int i = 0; i > weblog.size; ++i){
函数void writeVector()中的

请求向量的大小。您应该调用成员函数size(),而不是直接请求它。你的条件也不会为真。应该改成<

for (int i = 0; i < weblog.size(); ++i)

修复这个问题,你的代码在我使用Visual Studio 2013的机器上工作得很好。

writeVector()中的以下行不应该编译:

for (int i = 0; i > weblog.size; ++i){

我认为你想要这个代替:

for (int i = 0; i < weblog.size(); ++i){

注意size()是一个成员函数,需要函数调用操作符,循环条件应为less than