为什么我的函数没有运行?
Why aren't my functions running?
我是一个初学者,我正试图掌握这个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
。
相关文章:
- system() 无法运行我的程序,因为空间
- 运行我的代码时出现分段错误(核心转储)问题
- 正在尝试循环回到开始以再次运行我的程序
- arm_data在第二次运行我的程序时中止失败,然后
- 我想在终端窗口中运行我的 CLion 程序
- 如何在关闭Qt控制台应用程序之前运行我的析构函数?
- 使用 dev-c++ 运行我的 GIS 应用程序可以"gdal201.dll is missing"
- 当我运行我的程序时,即使"user"输入数字||C++ 绘画作业
- Inno设置编译器未运行我的C/C 代码
- 在代码块中运行我的第一个图形程序
- 正在重新运行我的主方法
- 如何在MacOS上使用根特权运行我的应用程序
- C++ Xcode 不会运行我的 for 循环(很短)
- STLPORT.5.2.dll 和视觉C++之间有什么关系?我是否需要 stlport 才能运行我的程序
- 无法通过循环运行我的代码,但是手动复制和粘贴有效
- 运行我的SFML脚本的问题
- 在Visual Studio 2012中运行我的OpenCV代码时无法找出'u202A'警告
- dev为什么dev-C++不运行我的程序
- 每当我尝试在codelite中运行我的项目时,任何更改我'We让人觉得被忽视了
- 在旧版本的linux上运行我的代码