我正试图围绕ostringstreams和istringstreams。所以,就像我一直这样,我用它制作了一个登录程序。但每次我尝试cout用户名和密码变量的内容时,它都会返回地址!
程序的目的:使用输入和输出字符串流创建模拟登录屏幕
代码:
#include<iostream>
#include<string>
#include<conio.h>
#include<stdio.h>
#include<sstream>
using namespace std;
int main(int argv, char *argc[]){
char ch;
ostringstream username,
password;
ostringstream *uptr,
*pptr;
uptr = &username;
pptr = &password;
cout << "Welcome" << endl << endl;
cout << "Enter a username: ";
do{
ch = _getch();
*uptr << ch;
cout << ch;
}while(ch != '\r');
cout << endl << "Enter a Password: ";
do{
ch = _getch();
*pptr << ch;
cout << "*";
}while(ch != '\r');
//if(username == "graywolfmedia25@gmail.com" && password == "deadbeefcoffee10031995"){
cout << endl << "username: " << *username << endl << "password: " << *password << endl;
//} else {
//cout << endl << "ACCESS DENIED" << endl;
//}
return 0;
}
我尝试使用* uptr和* pptr last,但在此之前我尝试直接从变量中编写和阅读。
答案 0 :(得分:2)
您应该使用str
从ostringstream
std::string
所以
cout << endl << "username: " << username.str() << endl << "password: " << password.str() << endl;
答案 1 :(得分:1)
标准流具有地址的输出运算符:当您尝试打印指针时,它只会打印指针的地址。此外,流有一个转换为指针,用于指示流是否处于良好状态:当它处于良好状态,即stream.fail() == false
时,它转换为合适的非空指针,通常只是this
。当它处于失败状态时,它返回0
(它未转换为bool
的原因是避免例如std::cout >> i
有效:如果它将转换为{{1}这个代码有效)。
假设您要打印字符串流的内容,您只需使用bool
来获取流stream.str()
。