C++不是我的首选语言.
我有一个文件包含这个:
e 225,370 35,75
Run Code Online (Sandbox Code Playgroud)
我想将e,225,370,35和75彼此分成char和ints,但我遇到了麻烦.我尝试了在网上和我的C++书中找到的所有内容,但仍然没有成功.请帮忙.
我会更容易用Java做这件事.
我有一个640x480的openGL窗口,我需要在屏幕中间居中.我以前用过:
glutInitWindowPosition((GetSystemMetrics(SM_CXSCREEN)-640)/2,
(GetSystemMetrics(SM_CYSCREEN)-480)/2);
Run Code Online (Sandbox Code Playgroud)
工作.
但是,当我编译时,突然间......
Linking...
1>Project1.obj : error LNK2028: unresolved token (0A000372) "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>Project1.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>C:\Users\My Computer\Documents\School Stuff\CS445\Project1\Debug\Project1.exe : fatal error LNK1120: 2 unresolved externals
Run Code Online (Sandbox Code Playgroud)
有人请帮忙.这对我来说非常烦人和令人沮丧,因为我对OpenGL和GLUT了解不多.
我已经在这工作了几个小时,无法弄明白,也无法找到任何有效的在线帮助.基本上我要完成的要点就是拥有一个带按钮的Qt GUI和一个QTextBrowser.当我按下按钮时,我希望它显示一条消息,然后每隔10秒继续打印此消息.
我想我会使用QTimer,因为有一个计时器每10秒显示一次消息是有意义的.当我最初将它实现到我的`buttonClicked()SLOT时,它导致程序冻结.我在网上寻找解决方案并找到了QApplication :: processEvents().
所以基本上在我的函数中我有这样的东西:
while(1)
{
QTimer *timer;
connect(...) //omitted parameters for this example
timer.start(10000);
ui->diplay->append("Message");
while(timer.isActive())
{
QApplication::processEvents()
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它会在while循环中突破timer.isActive(),但它不会简单地停留在那里.
所以我认为这是一个线程问题.所以我想出了如何使用QThreads,但我仍然无法让它工作.基本上当我创建一个带有计时器的线程并且线程告诉计时器启动时,程序关闭并且控制台显示"程序意外完成".
必须有一个简单的方法来做到这一点,但我与Qt的记录一直是那个
我试图在QComboBox中使用富文本,但它不支持它.也许我应该写一个子类?但我不确定我需要覆盖什么,因为我之前从未做过这样的事情.请帮忙.谢谢!
我有一个文件:
a 0 0
b 1 1
c 3 4
d 5 6
Run Code Online (Sandbox Code Playgroud)
使用istringstream,我需要得到一个,然后是b,然后是c,等等.但我不知道该怎么做,因为在网上或我的书中没有好的例子.
代码到目前为止:
ifstream file;
file.open("file.txt");
string line;
getline(file,line);
istringstream iss(line);
iss >> id;
getline(file,line);
iss >> id;
Run Code Online (Sandbox Code Playgroud)
这两次都会为id打印"a".我不知道如何使用istringstream,我必须使用istringstream.请帮忙!
我写了这个Node类和=运算符重载函数,这是我可以让它编译和运行的唯一方法,但它只是溢出并炸弹我的程序.有人可以解决它,以便它的工作原理.我没有很多在C++中重载运算符的经验.我只想将Node对象设置为等于另一个Node对象.提前致谢!
class Node
{
public:
Node();
int y;
Node& operator=(const Node& n);
};
Node::Node(){ y = -1; }
Node& Node::operator=(const Node& n) { return *this = n; }
Run Code Online (Sandbox Code Playgroud)
.
Build issues:
1>c:\users\aaron mckellar\documents\school stuff\cs445\test\test\main.cpp(57) : warning C4717: 'Node::operator=' : recursive on all control paths, function will cause runtime stack overflow
1>Linking...
1>LINK : C:\Users\Aaron McKellar\Documents\School Stuff\CS445\Test\Debug\Test.exe not found or not built by the last incremental link; performing full link
Run Code Online (Sandbox Code Playgroud) 当我试图简化我遇到的问题时,请参考以下链接,现在遇到了一个我无法解决的问题.
链接:Qt:如何使用QTimer每10秒向QTextBrowser打印一条消息?
在上面链接的帖子中,我简化了我想要做的任务,只是说我想按一个按钮并让它在QTextBrowser每10秒显示一次.我当时难以QTimer上班,所以我想如果我能QTimer上班,那么我就能完成任务.
我真正想做的是从文件中读取行,每2500行后我想打印一条消息然后等待10秒.
伪代码:
while(not at the end of the file)
{
read in 2500 lines
print a message
wait 10 seconds
}
Run Code Online (Sandbox Code Playgroud)
QTimer很好,但它与我想要的相反.而不是发送消息并等待10秒,首先他们等待10秒,超时,然后发送消息.
所以为了让它以我想要的方式工作,我首先调用了printMessage()SLOT然后我做了一个SLOT stopTimer(),它只是停止了计时器.所以在10秒过后,它将简单地调用stopTimer()然后继续处理输入文件.
在真正的问题上:
QTimer在通过代码之前,Qt不会等待a 完成.我希望代码在读取下一行2500行代码之前等待整整10秒.我发现它QTimer有一个isActive()返回bool值的函数.
因此,在我希望完成10秒延迟的地方,我将以下内容:
while(timer->isActive());
Run Code Online (Sandbox Code Playgroud)
我认为程序将在此循环中保持10秒钟,然后在QTimer超时后退出,因为条件将为假.问题是它不会退出循环,因为计时器的状态永远不会改变,无论它在这个循环中等待多长时间!我检查了调试器并且isActive( )无论经过的时间如何都保持为真.
然后我省略了while(timer->isActive())循环并在调试器中观察了计时器.看起来计时器实际上并没有开始计时,直到它退出时(不在文件的末尾).所以我相信,因为while(timer->isActive())循环嵌套在这里,它导致它永远不会超时.我可能错了,但这似乎正在发生.另外,令人讨厌的是该QTimer对象没有显示计时器活动时的经过时间的字段.因此,我无法检查所有进一步调试的时间.
有人请测试一下,或者让我知道一个解决方法!
对于听起来如此简单的事情,这是我最近遇到的最大的痛苦,但我一般不使用Qt,所以这可能是我缺乏经验.
以下是我所拥有的代码的摘录,目前冻结如上所述:
void Form::startBtn_pushed()
{
QTimer *timer = new QTimer(this);
QFile file(“file.txt”);
QTextStream stream(&file);
QString line;
int lineCount …Run Code Online (Sandbox Code Playgroud) 我有一个文件:
P 0.5 0.6 0.3
30 300
80 150
160 400
200 150
250 300
T
r 45 0 0
s 0.5 1.5 0 0
t 200 –150
.
.
.
Run Code Online (Sandbox Code Playgroud)
当我读到'P'时,我知道将会有3个花车.接下来是有限数量的X和Y坐标.数字会有所变化,直到达到"T",我必须承认.然后可能会有一个'r','s'或't'后跟一些值.
无论如何我知道如何识别'P'然后接收2个浮点数然后我知道我必须有一个while循环的X和Y坐标,当我到达'T'时它将停止.我不太了解C++使循环停止并识别'T'然后做其他事情.
一个例子来解释将不胜感激.提前致谢!