我使用的是ubuntu 10.1,g ++编译器.
我试图将gcov和lcov用于我的C++项目.我设法编译gcov:
g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp
Run Code Online (Sandbox Code Playgroud)
没有错误或警告消息.接下来我尝试运行gcov:
gcov main.cpp user.cpp game.cpp
Run Code Online (Sandbox Code Playgroud)
还好.我也尝试运行我的程序:
./a.out
Run Code Online (Sandbox Code Playgroud)
并再次运行gcov,我的主要用户和game.cpp现在显示一些百分比.我想捕获数据,我在终端输入:
lcov --directory /home/projects/Game1/ -c -o application.info
Run Code Online (Sandbox Code Playgroud)
但它给了我这个:
Capturing coverage data from /home/projects/Game1/
geninfo: ERROR: cannot read /home/projects/Game1/!
Run Code Online (Sandbox Code Playgroud)
我在网上搜索,阅读lcov文档,我找不到答案.有人可以帮帮我吗?
另外,我也无法打开main.gcda文件.(我尝试使用文本编辑器打开,它说一些字符编码问题,非常多:UTF-8,Western(ISO-8859-1),Western(ISO-8859) -11)等,但仍然无法打开并读取文件.
请帮帮我..谁?
编辑:
我承认,这是我的错误(我非常抱歉,"home/Projects/Game1",资本为"P".)在验证路径后,我收到了这个新错误:
geninfo: ERROR: /home/Projects/Game1/main.gcno: reached unexpected end of file
Run Code Online (Sandbox Code Playgroud) 我有这张地图:
m.insert(pair<int, string>(10, "map1"));
m.insert(pair<int, string>(11, "map2"));
m.insert(pair<int, string>(12, "map3"));
m.insert(pair<int, string>(13, "map4"));
m.insert(pair<int, string>(14, "map5"));
Run Code Online (Sandbox Code Playgroud)
然后,我让用户输入一个数字:
Please select:
1. Map1
2. Map2
3. Map3
4. Map4
5. Map5
Run Code Online (Sandbox Code Playgroud)
比方说,如果用户输入3,我该如何得到这个值:12 ??
嗨,我使用ubuntu(Linux),使用g ++编译器.
我有一个非常奇怪的情况,昨天我的代码工作正常,我没有做任何事情,但今天,它没有工作.这是我的代码:
ifstream file;
file.open("users.txt", ios::in);
if(file.is_open()){
int counter = 0;
string readLine;
file.seekg(0, ios::end);
if (file.tellg() == 0)
file.close();
else {
while(!file.eof()){
getline(file,readLine);
cout << "whats happening?" << readLine << endl;
// I was suppose to do process here, but i comment it for debug purposes
}
openFile.close();
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么,我花了2个小时调试,昨天,它可以读取用户数据,但今天,我打开相同的项目,但它无法读取文件.我100%肯定,路径是正确的,文件有内容.我的结果是:
Whats happening?
Run Code Online (Sandbox Code Playgroud)
多数民众赞成,没有别的.帮助我,我疯了看看这东西!!!!!!!!
我有一个名为Room的类,Room类有setPrice和display函数.
我将房间对象存储在矢量中:
room.push_back(Room("r001", 1004, 2, "small"));
room.push_back(Room("r002", 1005, 2, "small"));
room.push_back(Room("r003", 2001, 4, "small"));
room.push_back(Room("r004", 2002, 4, "small"));
Run Code Online (Sandbox Code Playgroud)
在我的主要功能中,我创建了一个显示所有房间的显示功能.这是我的代码:
void displayRoom()
{
vector<Room>::iterator it;
for (it = room.begin(); it != room.end(); ++it) {
*it.display(); // just trying my luck to see if it works
}
}
Run Code Online (Sandbox Code Playgroud)
但它没有调用Room的显示方法.
如何调用Room(类)的显示方法(无参数)和setPrice(1参数)方法?
我有一个任务是开发一个C++命令行(终端,我正在使用,将运行Linux/Ubuntu中的程序)显示.但我不喜欢命令行设计,无论如何都要改进UI设计?
注意:我必须在终端运行程序!!
我是OOP和C++的新手.
我有一个名为Database的类.此类的构造函数将建立与数据库的连接.然后,我有其他类,如用户,分数等.我希望所有这些类共享来自Database类的连接.我怎么做?
程序流程示例:
主要功能称为数据库类,它建立与数据库的连接.
我想验证用户,如下所示:
用户a("user1","password1"); a.authenticate("user1","password1");
但在我的Users :: authenticate函数中,如何利用已经建立的连接?
编辑:
我在c ++中使用mysql ++
在阅读答案后,我将使用"传递作为参考"方法.但我遇到了几个错误:
main.cpp
mysqlpp::Connection conn(false);
int main() {
if (conn.connect(DATANAME, HOST, DBUSER, DBPASS)) {
Users a(conn, "test","pass");
a.authenticate();
Run Code Online (Sandbox Code Playgroud)
这是我的用户构造函数和身份验证功能:
Users.cpp
Users::Users(mysqlpp::Connection conn, string username, string password) {
this->conn = conn;
this->username = username;
this->password = password;
}
void Users::authenticate() {
if(this->conn != NULL){
cout << "Have connection" << endl;
} else {
cout << "No connection" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
它可以编译和运行.但它命令行,它显示:
Segmentation fault.
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?我猜我的代码错了