说您需要存储一个人的名字和姓氏。我知道我可以这样做:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="container">
<div id="Btns">
<button id="recreate"
onclick="resizeGrid(this.value)">remake
grid</button>
</div>
<br />
</div>
<script src="script.js"></script>
</body>
</html>
window.onload = function(){
var createGrid = prompt("How many rows do you want?");
for(i = 0; i <= createGrid; i++){
var row = document.createElement('div');
row.className = "row";
row.id = "row" + i;
for(k= 0; k <= createGrid; k++ ){
var box = document.createElement('div');
box.className = "box";
row.appendChild(box);
}
container.appendChild(row);
}
return container;
}
#container {
width: 50%;
height: 50%;
margin-top:50px;
margin-left: auto;
margin-right: auto;
background: "white";
overflow:hidden;
box-sizing: border-box;
}
.row{
border:1px solid red;
height:1em;
width:25.25%;
overflow:hidden;
box-sizing: border-box;
}
.box{
display: inline-block;
width: 8.25%;
height: 1em;
border: 1px solid red;
border-bottom: 0px;
border-left: 0px;
float:right;
overflow:hidden;
box-sizing: border-box;
margin: auto;
}
我想消除两个额外的变量和最后的串联。
我希望能够在将缓冲区存储到变量之前继续在缓冲区上输入。
有没有办法做到这一点?
答案 0 :(得分:2)
您可以实现input
function的C ++版本并使用它。例如:
#include <iostream>
#include <exception>
#include <string>
std::string input() {
std::string line;
if(getline(std::cin, line))
return line;
throw std::runtime_error(std::cin.eof() ? "end of input" : "input error");
}
std::string input(char const* prompt) {
(std::cout << prompt).flush();
return input();
}
int main() {
auto firstname = input("Enter first name? ");
auto lastname = input("Enter last name? ");
auto fullname = firstname + ' ' + lastname;
std::cout << "Hello " << fullname << '\n';
}
答案 1 :(得分:0)
嘿,我认为您可以轻松摆脱其中一个变量。
#include <iostream>
#include <string>
int main()
{
std::string lastname;
std::string fullname;
std::cout << "Users firstname ? "; std::cin >> fullname;
std::cout << "Users last name ? "; std::cin >> lastname;
fullname += ' ' + lastname;
std::cout << "Full name: " << fullname << std::endl;
return 0;
}
迭代器所希望的第二种方法是更多您想要的东西。
#include <iostream>
#include <string>
#include <iterator>
int main()
{
std::cout << "Users firstname ? ";
std::istream_iterator<std::string> it(std::cin);
std::string fullName;
std::cout << "Users lastname ? ";
fullName += *it;
++it;
fullName += ' ' + *it;
std::cout << "Full Name: " << fullName << "\n";
return 0;
}
我个人认为第一种方法更容易阅读和遵循。
答案 2 :(得分:0)
有一个有趣的post on reddit,其中包含您展示的示例。
当前,C ++尚无实现此目标的标准方法,但是该文章的作者提供了header-only library(这意味着您可以将代码复制粘贴到文件中或项目中的文件中,也可以只包含依赖项),例如:
int age = read<int>("Please enter your age: ");
cout << "You are " << age << " years old.\n";
如果您对应用外部依赖项不感兴趣,则必须坚持使用标准解决方案,即问题中显示的内容以及 Eddie C。的{{ 3}}。